home *** CD-ROM | disk | FTP | other *** search
/ The CICA Windows Explosion! / The CICA Windows Explosion! - Disc 2.iso / programr / progwin.zip / BEEPER1.ZIP / BEEPER1.C < prev    next >
Text File  |  1991-10-02  |  2KB  |  89 lines

  1.   /*-------------------------------------
  2.     BEEPER1.C -- Timer Demo Program No. 1
  3.          (c) Charles Petzold, 1990
  4.   ---------------------------------------*/
  5.   #include <windows.h>
  6.   #define ID_TIMER 1
  7.  
  8.   long FAR PASCAL WndProc (HWND, WORD, WORD, LONG);
  9.  
  10.   int PASCAL WinMain (HANDLE hInstance, HANDLE hPrevInstance,
  11.               LPSTR lpszCmdLine, int nCmdShow)
  12.        {
  13.        static char szAppName[] = "Beeper1";
  14.        HWND        hwnd;
  15.        MSG       msg;
  16.        WNDCLASS       wndclass;
  17.  
  18.        if (!hPrevInstance)
  19.         {
  20.         wndclass.style     = CS_HREDRAW | CS_VREDRAW;
  21.         wndclass.lpfnWndProc = WndProc;
  22.         wndclass.cbClsExtra     = 0;
  23.         wndclass.cbWndExtra     = 0;
  24.         wndclass.hInstance     = hInstance;
  25.         wndclass.hIcon     = LoadIcon (NULL, IDI_APPLICATION);
  26.         wndclass.hCursor     = LoadCursor (NULL, IDC_ARROW);
  27.         wndclass.hbrBackground = GetStockObject (WHITE_BRUSH);
  28.         wndclass.lpszMenuName  = NULL;
  29.         wndclass.lpszClassName = szAppName;
  30.  
  31.         RegisterClass (&wndclass);
  32.         }
  33.        hwnd = CreateWindow (szAppName, "Beeper1 Timer Demo",
  34.                 WS_OVERLAPPEDWINDOW,
  35.                 CW_USEDEFAULT, CW_USEDEFAULT,
  36.                 CW_USEDEFAULT, CW_USEDEFAULT,
  37.                 NULL, NULL, hInstance, NULL);
  38.        while (!SetTimer (hwnd, ID_TIMER, 1000, NULL))
  39.         if (IDCANCEL == MessageBox (hwnd,
  40.                   "Too many clocks or timers!", szAppName,
  41.                   MB_ICONEXCLAMATION | MB_RETRYCANCEL))
  42.          return FALSE;
  43.        ShowWindow (hwnd, nCmdShow);
  44.        UpdateWindow (hwnd);
  45.  
  46.        while (GetMessage (&msg, NULL, 0, 0))
  47.         {
  48.         TranslateMessage (&msg);
  49.         DispatchMessage (&msg);
  50.         }
  51.        return msg.wParam;
  52.        }
  53.  
  54.   long FAR PASCAL WndProc (HWND hwnd, WORD message, WORD wParam, LONG lParam)
  55.        {
  56.        static BOOL fFlipFlop = FALSE;
  57.        HBRUSH       hBrush;
  58.        HDC       hdc;
  59.        PAINTSTRUCT ps;
  60.        RECT       rc;
  61.  
  62.        switch (message)
  63.         {
  64.         case WM_TIMER :
  65.          MessageBeep (0);
  66.  
  67.          fFlipFlop = !fFlipFlop;
  68.          InvalidateRect (hwnd, NULL, FALSE);
  69.  
  70.          return 0;
  71.         case WM_PAINT:
  72.         hdc = BeginPaint(hwnd,&ps);
  73.         GetClientRect(hwnd,&rc);
  74.         hBrush = CreateSolidBrush(fFlipFlop ?RGB(255,0,0):RGB(0,0,255));
  75.         FillRect(hdc,&rc,hBrush);
  76.         EndPaint(hwnd,&ps);
  77.         DeleteObject(hBrush);
  78.         return 0;
  79.         case WM_DESTROY:
  80.         KillTimer(hwnd,ID_TIMER);
  81.         PostQuitMessage(0);
  82.         return 0;
  83.          }
  84.        return DefWindowProc(hwnd,message,wParam,lParam);
  85.        }
  86.  
  87.  
  88.  
  89.